package co.inventario.modelo.negocio;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import co.inventario.datos.sqlserver.OrdenCompraKardexDAOSQLServer;
import co.inventario.datos.sqlserver.KardexDAOSQLServer;
import co.inventario.datos.sqlserver.OrdenCompraDAOSQLServer;
import co.inventario.entidad.OrdenCompraKardexDTO;
import co.inventario.entidad.KardexDTO;
import co.inventario.entidad.OrdenCompraDTO;;

public class OrdenCompraKardexNegocio {
	
	public void crear(OrdenCompraKardexDTO ordenCompraKardexDTO, Connection connection) throws Exception, SQLException {
		OrdenCompraKardexDAOSQLServer ordenCompraKardexDAOSQLServer = new OrdenCompraKardexDAOSQLServer();
		OrdenCompraKardexDTO ordenCompraKardexDTOConsultado = ordenCompraKardexDAOSQLServer.consultarPorConsecutivo(ordenCompraKardexDTO, connection);
		if (ordenCompraKardexDTOConsultado == null) {
			ordenCompraKardexDAOSQLServer.crear(ordenCompraKardexDTO, connection);
		} else {
			throw new Exception("La orden de compra Kardex que intenta crear, ya existe.");
		}
	}
	
	public void actualizar(OrdenCompraKardexDTO ordenCompraKardexDTO, Connection connection) throws Exception, SQLException {
		OrdenCompraKardexDAOSQLServer ordenCompraKardexDAOSQLServer = new OrdenCompraKardexDAOSQLServer();
		OrdenCompraKardexDTO ordenCompraKardexDTOConsultado = ordenCompraKardexDAOSQLServer.consultarPorConsecutivo(ordenCompraKardexDTO, connection);
		if (ordenCompraKardexDTOConsultado != null) {
			ordenCompraKardexDAOSQLServer.actualizar(ordenCompraKardexDTO, connection);
		} else {
			throw new Exception("La orden de compra Kardex que intenta actualizar, no existe.");
		}
	}
	
	public OrdenCompraKardexDTO consultarPorCodigo(OrdenCompraKardexDTO ordenCompraKardexDTO, Connection connection) throws Exception, SQLException {
		OrdenCompraKardexDAOSQLServer ordenCompraKardexDAOSQLServer = new OrdenCompraKardexDAOSQLServer();
		OrdenCompraKardexDTO ordenCompraKardexDTOConsultado = ordenCompraKardexDAOSQLServer.consultarPorCodigo(ordenCompraKardexDTO, connection);
		return ordenCompraKardexDTOConsultado;
	}
	
	public ArrayList<OrdenCompraKardexDTO> consultarTodo(Connection connection) throws Exception, SQLException {
		OrdenCompraKardexDAOSQLServer ordenCompraKardexDAOSQLServer = new OrdenCompraKardexDAOSQLServer();
		ArrayList<OrdenCompraKardexDTO> ordenCompraKardexDTOLista = ordenCompraKardexDAOSQLServer.consultarTodo(connection);
		OrdenCompraDAOSQLServer ordenCompraDAOSQLServer = new OrdenCompraDAOSQLServer();
		OrdenCompraDTO  ordenCompraDTO = null;
		KardexDAOSQLServer kardexDAOSQLServer = new KardexDAOSQLServer();
		KardexDTO kardexDTO = null;
		for (OrdenCompraKardexDTO ordenCompraKardexDTO : ordenCompraKardexDTOLista) {
			ordenCompraDTO = ordenCompraDAOSQLServer.consultarPorCodigo(ordenCompraKardexDTO.getOrdenCompraDTO(), connection);
			ordenCompraKardexDTO.setOrdenCompraDTO(ordenCompraDTO);
			kardexDTO = kardexDAOSQLServer.consultarPorCodigo(ordenCompraKardexDTO.getKardexDTO(), connection);
			ordenCompraKardexDTO.setKardexDTO(kardexDTO);
		}
		return ordenCompraKardexDTOLista;
	}
}
